#define BOOST_TEST_MODULE MyTest //这个宏定义了测试模块的名称
//在包含 boost/test/included/unit_test.hpp 头文件之前定义 BOOST_TEST_MODULE 宏，告诉Boost.Test框架这个文件是整个测试程序的入口。boost/test/included/unit_test.hpp 是一个包含了所有必要代码的头文件，它会在程序启动时自动初始化测试框架，并在程序结束时进行清理。
#include <boost/test/included/unit_test.hpp>

// 定义一个测试套件
BOOST_AUTO_TEST_SUITE(MathTests)

BOOST_AUTO_TEST_CASE(test_multiplication) {
    int x = 4;
    int y = 5;
    BOOST_CHECK_EQUAL(x * y, 20);
}

BOOST_AUTO_TEST_CASE(test_division) {
    int x = 10;
    int y = 2;
    BOOST_CHECK_EQUAL(x / y, 2);
}

// // 参数化测试示例
// BOOST_AUTO_TEST_CASE(test_parameterized_addition, *boost::unit_test::data::make({1, 2, 3}) ^ boost::unit_test::data::make({4, 5, 6})) {
//     int a, b;
//     std::tie(a, b) = boost::unit_test::framework::current_test_case().p_args.get_tuple<int, int>();
//     BOOST_TEST(a + b > 0);
// }

// 异常测试示例
BOOST_AUTO_TEST_CASE(test_exception) {
    BOOST_CHECK_THROW(throw std::runtime_error("Error"), std::runtime_error);
}

BOOST_AUTO_TEST_SUITE_END()
